﻿-- Function: reGuardarSalida(integer, character, integer,integer)

-- DROP FUNCTION reGuardarSalida(integer, character, integer,integer)

CREATE OR REPLACE FUNCTION reGuardarSalida(smallint, integer, integer,integer)
  RETURNS integer AS
$BODY$

DECLARE
	iTipo 		ALIAS FOR $1; --1 = encabezado, 2 = detalle
	iNumEntrada	ALIAS FOR $2;
	iCodigo		ALIAS FOR $3;
	iCantidad	ALIAS FOR $4;
	xRegistro	record;
	
	iCantidadTotal	INT4;

	
BEGIN
	IF iTipo = 1 THEN -- si es encabezado
	
		select sum(cantidad) into iCantidadTotal from reentradasdetalle where numentrada = iNumEntrada;
		
		insert into reentradas(numentrada,clave,cantidadtotal) values(iNumEntrada,'SR',iCantidadTotal);		
		
		FOR xRegistro IN SELECT codigo,cantidad from reentradasdetalle where numentrada = iNumEntrada 
		LOOP
		
			UPDATE reactivos set existencia = existencia - xRegistro.cantidad where codigo = xRegistro.codigo;
			
		END LOOP;
	
	ELSE	IF iTipo = 2 THEN -- si es detalle
	
			insert into reentradasdetalle(numentrada,codigo,cantidad) values(iNumEntrada,iCodigo,iCantidad);
		
		END IF;
	END IF;
	return 1;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
